Development of graphical user interfaces, particularly for rich Internet applications, may require coordination between a number of users and developers. Application developers may need to create a number of prototypes, each prototype requiring user feedback, before a graphical user interface meeting all user requirements is developed. The process of creating and modifying a graphical user interface in order to create a production version of the graphical user interface can be expensive and time intensive. Moreover, even when the production version of the graphical user interface is created, new widgets and features may need to be added. The addition of such widgets and features may also require multiple interactions between users and developers, as well as the creation of multiple prototype user interfaces (i.e. prototypes), before an acceptable graphical user interface meeting all requirements is created.
Conventional approaches to graphical user interface development may involve a developer receiving a written requirements specification from the user. Alternatively, developers and users may meet physically or virtually in order to create a list of requirements together. Once the requirements have been established, a prototype or demonstration version of the graphical user interface may be developed in order to obtain user feedback. Multiple such versions may need to be developed, possibly due to communication difficulties between users and developers. In addition, problems may arise (e.g. the code of an existing user interface may need to be modified) due to rapid progression of technology and/or the addition of new features to a user interface language, or even the creation of an entirely new language that can be used to display a graphical user interface.
Another problem that may arise in the development of a graphical user interface is the lack of standardization of user interface components across one or more graphical user interfaces. The lack of standardization may arise due to a failure to follow user interface (UI) presentation guidelines (i.e. instructions specifying how UI components should look when they are displayed) uniformly, incorrect translation of user requirements into implementation language code, or poor communication between user interface developers. Also, user interface requirements may evolve as users view prototypes of the graphical user interface and become more familiar with the possibilities available for displaying various user interface components. Developing the new user interface prototypes may be particularly time consuming if user requirements are manually translated into user interface components written in implementation language code. Manual translation of user requirements into implementation language code may also lead to a lack of standardization and a loss of usability due to the use of presentation attributes selected based on user requirements rather than standard presentation attributes. Prevention and detection of errors resulting from manual translation of user requirements into implementation language code may be effort and cost intensive.
Accordingly, there may be a need for a tool to automate or improve automation of the translation of requirements describing a graphical user interface into a graphical user interface that can be displayed. Moreover, it may be a problem to enable users to easily and intuitively describe user interface components without needing to be concerned about implementation language dependent properties or attributes of the user interface components. It may also be a problem to quickly generate a prototype of a user interface based on user requirements or an implementation language independent description of the user interface, thereby reducing errors in the translation of requirements into code and enabling new features and refinements to be gathered quickly and accurately. Improved automation of the translation of user requirements into implementation language dependent code may reduce the effort required to generate a user interface or components of the user interface. Moreover, standardization of the user interface may be improved through the identification and application of the appropriate presentation rules. In particular, it may be possible to more effectively match user requirements to implementation dependent features. Accordingly, user requirements can be quickly prototyped and demonstrated and the correspondence between user requirements and implementation dependent features is automatically documented, e.g. by means of a map or dictionary.
The creation of a user interface and components thereof according to an implementation language independent description of the user interface may enable users to describe the graphical user interface in a simplified way. This may increase the involvement of users in the development of the graphical user interface, thereby reducing the time required for development, particularly by decreasing the number of prototypes required. In some cases, a user would be able to create the graphical user interface on his own without needing to understand the underlying implementation and without requiring the assistance of a developer.
The subject matter described in the present specification can be implemented as a method or as a system, possibly in the form of one or more computer program products. The subject matter described in the specification can be implemented in a data signal or on a machine readable medium, where the medium is embodied in one or more information carriers, such as a CD-ROM, a DVD-ROM, a semiconductor memory, or a hard disk. Such computer program products may cause a data processing apparatus to perform one or more operations described in the specification.
In addition, subject matter described in the present specification can also be implemented as a system including a processor and a memory coupled to the processor. The memory may encode one or more programs and cause the processor to perform one or more of the methods described in the specification. Further subject matter described in the specification can be implemented using various machines.
Details of one or more implementations are set forth in the exemplary drawings and description below. Others features will become apparent from the description, the drawings, and from the claims.